package com.pattern;

import com.pattern.composite.Component;
import com.pattern.composite.Leaf;
import org.junit.Test;

/**
 * @Description: 组合模式
 * @Author: whp
 * @Date: 2021-02-07 15:23
 */
public class Composite {

    //组合模式的应用场景
   // 在需要表示一个对象整体与部分的层次结构的场合。
  //  要求对用户隐藏组合对象与单个对象的不同，用户可以用统一的接口使用组合结构中的所有对象的场合。

    @Test
    public void testComposite(){
        Component root=new com.pattern.composite.Composite();
        Component fisrt=new Leaf("fisrt");
        Component second=new Leaf("second");

        Component child=new com.pattern.composite.Composite();
        Component ch1=new Leaf("ch1");
        Component ch2=new Leaf("ch2");
        child.add(ch1);
        child.add(ch2);


        root.add(fisrt);
        root.add(second);
        root.add(child);

        //root.operation();
        child.operation();

    }
}
